package base.demo;

import base.utils.PrintUtils;

import java.util.Arrays;

public class InsertSortDemo {

    public static int[] arrays = {2, 3, 1, 5, 4};

    public static void main(String[] args) {
        sort04(arrays);
    }


    public static void sortArray(int[] arr) {
        int len = arr.length;
        int[] list = Arrays.copyOf(arr, len);

        for (int i = 1; i < len; i++) {
            int item = list[i];

            for (int j = i; j > 0; j--) {
                System.out.print(j);

                if (item < list[j - 1]) {
                    list[j] = item;
                }

            }
            System.out.println();
        }


        PrintUtils.print(list);

    }


    public static void sortArray2(int[] sourceArray) {
        // 对 arr 进行拷贝，不改变参数内容
        int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
        // 从下标为1的元素开始选择合适的位置插入，因为下标为0的只有一个元素，默认是有序的
        for (int i = 1; i < arr.length; i++) {
                                        // 记录要插入的数据
            int tmp = arr[i];
                                         // 从已经排序的序列最右边的开始比较，找到比其小的数
            int j = i;                   //
            while (j > 0 && tmp < arr[j - 1]) {
                arr[j] = arr[j - 1];
                j--;
            }

            // 存在比其小的数，插入
            if (j != i) {
                arr[j] = tmp;
            }
        }
        PrintUtils.print(arr);
    }




    public static void sortArray3(int[] sourceArray) {
        int len=sourceArray.length;
        // 对 arr 进行拷贝，不改变参数内容
        int[] arr = Arrays.copyOf(sourceArray,len);


        for (int i=1;i<len;i++){
            int tmp=arr[i];
            int j=i;
            while (j>0&&tmp<arr[j-1]){
                arr[j]=arr[j-1];
                j--;
            }
            if (j!=i) arr[j]=tmp;
        }
    }



    public static void sort02(int[] arr){
        int len = arr.length;
        int[] list = Arrays.copyOf(arr, len);

        for (int i = 1; i < len; i++) {
            for (int j = i; j > 0&&list[j]<list[j-1]; j--) {
                System.out.print(j);
                int sub=list[j];
                list[j]=list[j-1];
                list[j-1]=sub;
            }
            System.out.println();
        }
        PrintUtils.print(list);
    }


      public static void sort03(int[] arr){
        int len = arr.length;
        int[] list = Arrays.copyOf(arr, len);

        for (int i=1;i<len;i++){
            int tmp=list[i];
            int j=i;

            while (j>0&&tmp<list[j-1]){
                list[j]=list[j-1];
                j--;
            }
            if (j!=i)list[j]=tmp;
        }

        PrintUtils.print(list);
    }

    public static void sort04(int[] arrSorce) {
        int len = arrSorce.length;
        int[] arr = Arrays.copyOf(arrSorce, len);

        for (int i=0;i<len;i++){
            int tmp=arr[i];
            int j=i;
            while (j>0&&arr[j-1]>tmp){
                arr[j]=arr[j-1];
                j--;
            }
            if (j!=i)arr[j]=tmp;
        }
        PrintUtils.print(arr);

    }

















}
